#include <cstdio>
#include <cmath>
bool prime[100000] = {false}; //用来记录概述是否为素数
int count[100000] = {0};      //用来记录该因子的个数
//数组要开到10^5，不然可能会访问越界
int N;
int sqrtN;
void isprime()
{
    sqrtN = sqrt(N) + 1;
    int sqrtI;
    int i, j;
    for (i = 2; i <= sqrtN; ++i)
    {
        sqrtI = sqrt(i);
        for (j = 2; j <= sqrtI; ++j)
        {
            if (i % j == 0)
            { //能被除1和自身外的整数整除，不是素数
                break;
            }
        }
        if (j > sqrtI)
        {
            prime[i] = true;
        }
    }
    return;
}
int main()
{
    scanf("%d", &N);
    isprime();
    int tmp = N;
    bool flag = false; //表示有除1与自身外的因子
    for (int i = 2; i <= sqrtN; ++i)
    {
        if (prime[i] == true)
            while (tmp % i == 0)
            {
                tmp /= i;
                ++count[i];
                flag = true;
            }
    }
    bool first = true; //第一个打印的因子
    printf("%d=", N);
    if (flag)
    {
        for (int i = 2; i <= sqrtN; ++i)
        {
            if (count[i] != 0)
            {
                if (first) first = false;
                else printf("*");
                if (1 == count[i])
                {
                    printf("%d", i);
                }
                else
                {
                    printf("%d^%d", i, count[i]);
                }
            }
        }
        if(tmp != 1)
        {//输出剩余因子
            printf("*%d", tmp);
        }
    }
    else
    {
        printf("%d", N);
    }
    printf("\n");
    return 0;
}